//
//  KeyManage.h
//  OpensslTest
//
//  Created by jiahua on 16/3/28.
//  Copyright © 2016年 secsmarts. All rights reserved.
//
//  秘钥管理类
//

#import <Foundation/Foundation.h>
#import "sstComstruct.h"
#import "SstDevice.h"
#import "SstWifi.h"

@interface KeyManage : NSObject

//+(KeyManage *)getKeyManageInstance;

+(void)setWIFIWithSSID:(NSString*)ssid withPassword:(NSString*)password;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Config Randomkey1
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+(NSString *)generatorRandomkey1WithIP:(NSString*)ip;
+(u8*)getRandomKey1fromIp:(NSString *)ip;


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Config SessionKey
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+(void)generatorSessionKey:(u8*)key2 withIp:(NSString*)ip;
+(u8*)getSessionKeyfromIp:(NSString *)ip;
+(void)removeSessionKeyWithIP:(NSString*)ip;


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark ipToToken

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Config R3
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+(void)generatorR3WithSSID:(const u8*)ssid withPassword:(const u8*)password withMac:(const u8*)mac withIP:(NSString*)ip;
+(u8*)getDiscussKeyR3fromIp:(NSString *)ip;

+(void)xorData:(unsigned char *)outData withInput1:(const unsigned char * const)input1 withInput2:(const unsigned char * const)input2 withLen:(const long)length;

+(void)generatorR3WithSSID: (SstDevice *)device withWifi: (SstWifi *) wifi;

/**
*  从云端获取家电的Toke
*
*  @param device
*
*  @return void
*/
+(void)getTokenForDeviceFromCloud: (SstDevice *)device;

/**
 *  根据deviceID获得UDPid
 *
 *  @param deviceId
 *  @return u8 udpid
 */
+(void)deviceId2UdpId:(const u8* const)deviceId udpKeyId:(u8 *)udpKeyId;

/**
 *  截取后16位
 *
 *  @param data
 *  @return NSString 后16位
 */
+(u8 *)getTail16String:(const u8 *)data dataLen: (int) datalen;

/**
 *  半段是否是16个零
 *
 *  @param data
 *  @return true / false
 */
+(int)isZeroTail:(const u8 *)data;
@end
